package cn.daneijiaoyuarrys;

/**
 * @author SWJ
 * @create 2021-06-09 14:17
 * 本类测试继承中构造方法的使用
 * 继承--构造方法
 * 1.子类创建对象时，默认会先调用父类的构造方法
 * 2.在子类中第一行默认存在super()，表示调用父类的无参构造
 * 3.当父类中没有无参构造时，需要通过super(带参数)，调用其他的构造方法
 * 4.构造方法不可以被继承
 * */
public class TestCreate11 {
    public static void main(String[] args) {
        Son2 S3 = new Son2();
        //创建子类的无参构造
    }
}

class Father2 {
    /**
     * 构造方法可以被继承？不可以
     * 原因：由于构造方法的语法要求，构造方法必须与类名同名
     * 不能再子类有一个父类名字的构造方法，不然不符合要求
     * 提供父类的无参构造
     */
    public Father2() {
        System.out.println("我是父类的无参构造");
    }


}

/**
 * 创建子类建立子类与父类的继承关系
 */
class Son2 extends Father2 {
    /**
     * 子类的构造代码方法中，默认存在spuer();
     * 表示调用父类的无参构造，也就是说，在创建子类对象时，会调用子类的构造方法
     * 继承后，会去调用父类的构造方法，在去调用子类的构造方法
     * <p>
     * 2.父类没有无参构造时候，调用的是父类的含参构造
     * 子类不关心具体调用是父类的哪个构造函数
     * 只是必须调用一个父类的构造函数而已
     */
    public Son2() {

        System.out.println("我是son2无参构造");

    }

}